嗨我是 LINE TODAY Team 的 TECH FRESH - Ming (許浩鳴),這篇文章統整了我在 Golang Taipei #55 Meetup 分享的內容。Event-driven architecture 在近幾年越來越受關注,它不僅幫助我們解耦服務組件、反轉依賴,更可提高系統的 throughput,大幅提升了擴展性。這次主題會講解 Event-driven 的核心概念,簡介幾種常見的分佈式消息系統,並展示如何輕鬆用 Golang 實作 event-driven application,幫助大家能更快理解。什麼是 EventEvent 可以是一個「改變系統狀態」的變化,也可以是陳述當前系統狀態的「事實」,如使用者的點擊、sensor 的資料流、一筆成立的訂單資訊等。而產生 event 的一方叫生產者 (producer),接收 event 的一方叫消費者 (consumer)。如上圖,event publisher 產生了一個 event 後,數個對此事件有興趣的 consumer 都可以訂閱它。事件驅動架構主流的架構有兩種:Pub/Sub model消費者訂閱一